1. Field of the Invention
The invention relates generally to storage controllers, and more specifically, relates to responding to inquiry commands from a host for a storage device during an initialization process for the storage device.
2. Discussion of Related Art
Small Computer Systems Interface (“SCSI”) is a set of American National Standards Institute (“ANSI”) standard electronic interface specification that allows, for example, computers to communicate with peripheral hardware. Common SCSI compatible peripheral devices may include: disk drives, tape drives, CD drives (“CD-ROM”, “CD-RW”, etc.), DVD drives, printers and scanners. SCSI as originally created included both a command/response data structure specification and an interface and protocol standard for a parallel bus structure for attachment of devices. SCSI has evolved from exclusively parallel interfaces to include both parallel and serial interfaces. “SCSI” is now generally understood as referring either to the communication transport media (parallel bus structures and various serial transports) or to a plurality of primary commands common to most devices and command sets to meet the needs of specific device types as well as a variety of interface standards and protocols.
The collection of primary commands and other command sets may be used with SCSI parallel interfaces as well as with serial interfaces. The serial interface transport media standards that support SCSI command processing include: Fibre Channel, Serial Bus Protocol (used with the Institute of Electrical and Electronics Engineers 1394 FireWire physical protocol; “IEEE 1394”) and the Serial Storage Protocol (SSP).
SCSI interface transports and commands may be used to interconnect storage devices with one or more storage controllers. For example, serial SCSI transport media and protocols such as Serial Attached SCSI (“SAS”) and Serial Advanced Technology Attachment (“SATA”) may be used by storage controllers to communicate with the storage devices. A host system in communication with a storage controller may then issue one or more Input Output (“IO”) operations for a storage device. Those skilled in the art are familiar with SAS and SATA standards as well as other SCSI related specifications and standards. Information about such interfaces and commands is generally obtainable at the website http://www.t10.org.
Storage devices (e.g., SATA storage devices) typically require an initialization process prior to responding to normal IO operations issued by a host. The process of initializing a storage device includes transmitting a sequence of commands to the storage device to place the storage device into a known state. This process may be performed by the storage controller that couples one or more storage devices with the host. In SATA devices, many drive settings are lost when the device is power cycled or reset.
In some cases, a storage controller may postpone initialization of the storage device until the host issues the first IO operation to the storage device. When the first IO arrives at the storage controller, the storage controller pushes the IO operation to a command queue and begins the initialization process for the storage device. After the storage device is initialized, the storage controller pops the IO operation off of the command queue and issues the IO operation to the storage device.
When the host issues the first IO to the storage device and the storage device is not initialized, a delay occurs before the storage controller issues the IO to the storage device until after the storage device is initialized. This delay may cause the host to suspend some activities while waiting for a response to the IO. For example, when the host is booting, the host may issue inquiry commands to the storage controller for storage devices. A delay in responding to the inquiry commands may stall the host's boot process and increase the time it takes to boot the host.
Thus it is an ongoing challenge to minimize the delay in responding to the first IO issued by the host to a storage device that is not initialized.